<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
  <title>Regularni gramatiky</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta name="Author" content="Bronislav Houdek">
  <link rel="stylesheet" type="text/css" href="/fja/css/help.css">
</head>
<body>
    
<a name="gra"><h1>GRA - regularni gramatika</h1></a>
<p>
  Regularni gramatika je akceptovana, pokud vsechny jeji pravidla vyhovuji syntaxi
  "<span>S-&gt;aA</span>", "<span>S-&gt;a</span>" (<span>S</span>,<span>A</span> - neterminal, <span>a</span> - terminal)
  s vyjimkou pravidla "<span>S-&gt;\e</span>", pokud se <span>S</span> nevyskytuje na prave strane pravidla.<br>
  Pravidla gramatiky musí být odděleny novým řádkem nebo čárkou "<span>,</span>".
</p>
<ul>
  <li><a href="examples.html#gra">priklad regularni gramatiky</a>
  <li><a href="#init_gra">Inicialni neterminal</a>
  <li><a href="#pravidlo">Pravidlo</a>
  <li><a href="#neterminal">Neterminal</a>
  <li><a href="#terminal">Terminal</a>
  <li><a href="#epsilon">Epsilon</a>
  <li><a href="#corr_symbol">Povoleny symbol</a>
</ul>

<a name="init_gra"><h2>Inicialni neterminal gramatiky</h2></a>
<p>
  Za inicialni neterminal je zvolen prvni nalezeny neterminal.
</p>

<a name="pravidlo"><h2>Pravidlo gramatiky</h2></a>
<p>
  Pravidlo je korektni pokud je tvaru: "<span>(NuE)*N(NuE)* -&gt; (NuE)+ |  (NuE)+ | ...</span>", s vyjimkou "<span>S-&gt;\e</span>", kde "<span>S</span>" se nevyskytuje na prave strane pravidla.<br>
  N je mnozina neterminal, u - je sjednoceni, E - mnozina terminalu.<br>
  "<span>-&gt;</span>" - znaci <br>
  <br>
</p>

<a name="neterminal"><h2>Neterminal gramatiky</h2></a>
<p>
  Neterminalem je symbol z mnoziny {A,..,Z} nebo sekvence <a href="#corr_symbol">povolenych symbolu</a> uzavrena do "zobacku" - "<span>&lt;xxx&gt;</span>".<br>
  Vyjimku tvori mezera, ta lze v "zobaccich" vyuzivat libovolne bez uvozovaciho symbolu.
  Pokud se v "zobaccich" vyskytne sekvence pro epsilon, tak je tez ignorovano - tzn. "<span>&lt;A\eB&gt;</span>"="<span>&lt;AB&gt;</span>".<br>
  Pokud v zobaccich bude "prazdno", bude neterminal vyhodnocen jako chybny a gramatika nebude akceptovana - tzn. "<span>&lt;\e\e&gt;</span>"="<span>&lt;&gt;</span>"=chyba.
</p>

<a name="terminal"><h2>Terminal gramatiky</h2></a>
<p>
  Neterminalem je jakykoliv povoleny symbol krome symbolu {A,..,Z} nebo sekvence <a href="#corr_symbol">povolenych symbolu</a> uzavrena do uvozovek - "<span>"xxx"</span>".<br>
  Vyjimku tvori mezera, ta lze v uvozovkach vyuzivat libovolne bez uvozovaciho symbolu.
  Epsilon lze vytvorit sekvenci "<span>\e</span>", jako epsilon bude vyhodnocen tak "prazdny" neterminal - "<span>"\e\e"</span>"="<span>""</span>"="<span>\e</span>".<br>
  Pokud se objevi epsilon kdekoliv v pravidle i s jinymi symboly, tak je ignorovano - tzn "<span>\eS-&gt;a\eA</span>"="<span>S-&gt;aA</span>".<br>
  Pokud se sekvence pro epsilon vyskytne v definici term. , tak je tez ignorovano - tzn. "<span>"A\eB"</span>"="<span>"AB"</span>".
</p>

<a name="corr_symbol"><h2>Povoleny symbol</h2></a>
<p>
  Povoleny symbol je jakykoliv znak krome specialnich symbolu a neviditelnych znaku:<br>
  Specialni symboly jsou: "<span>\n</span>", "<span>,</span>", "<span>&lt;</span>", "<span>&gt;</span>", "<span>|</span>", "<span>"</span>", "<span>\</span>", mezera.<br>
  Samotna pomlcka "<span>-</span>" je tez korektni symbol.
  Pokud chceme uvest specialni symbol v nazvu term. nebo neterm. musime jej uvest "<span>\</span>". To neplati pro novy radek "<span>\n</span>", ten nelze pouzit v definici term. nebo neterm. .<br>
</p>
  
</body>
</html>
